val a = fun() {}
val b = fun test() {}

val c = fun() {}
val c = fun() = 4

val c = fun() =
        4

val c = fun() {}
val c = fun() = 4

fun test() = fun test() = 4

fun test() {
    test(fun() {
    })
    test(fun test() {})
    test(fun test() = 5)

    test(fun test() = fun test(a: Int) = 2)

    2.(fun test() {})()

    (fun() = 4)
    (fun() {})

    test(fun test() = 4)
}

fun d = fun(a: Int,
            b: String) {
}

fun e = fun() {
    val a = 1
}

fun f = fun() { foo() }

val g: (String) -> Int = fun(p: String): Unit { /* comment */ /* other comment */ }

fun foo() {}